/*******************************************
  Jose Andres Lara Vecino

  Author       : $$Author: cainlara@gmail.com $$
  Last CheckIn : $$Date: 2012-07-27 21:35:24 +0000 (Fri, 27 Jul 2012) $$
  Revision     : $$Revision: 99 $$
*******************************************/

package gui;

import static utilidad.Util.obtenerTamanoPantalla;
import gui.imagen.Imagen;
import gui.menu.BarraMenuPrincipal;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

import mensaje.Mensaje;
import control.App;

/**
 * Frame contenedor de la aplicacion.
 * 
 * @author jose.lara 06.06.2012
 */
public class VentanaPrincipal extends JFrame {
    private static final long serialVersionUID = 4260055797852194459L;
    private static final AdaptadorVentana WINDOW_ADAPTER = new AdaptadorVentana();
    
    private PanelPrincipal panelPrincipal       = null;
    private BarraMenuPrincipal menuPrincipal    = null;
    
    public VentanaPrincipal() {
        setIconImage(Imagen.getImagen("ICONO"));
        setTitle(Mensaje.getMensaje("VENTANA_PRINCIPAL-TITULO"));
        add(getPanelPrincipal(), BorderLayout.CENTER);
        agregarListeners();
        setJMenuBar(getMenuPrincipal());
        pack();
        ubicarVentana();
    }
    
    private BarraMenuPrincipal getMenuPrincipal() {
        if(menuPrincipal == null) {
            menuPrincipal = new BarraMenuPrincipal();
        }
        
        return menuPrincipal;
    }
    
    private void ubicarVentana() {
        Dimension tamano    = null;
        
        if(obtenerTamanoPantalla() != null) {
            tamano = new Dimension((int) (obtenerTamanoPantalla().getWidth() * 0.7), (int) (obtenerTamanoPantalla().getHeight() * 0.7));
            setSize(tamano);
            setLocationRelativeTo(null);
        }
    }
    
    private void agregarListeners() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        addWindowListener(WINDOW_ADAPTER);
    }
    
    
    private PanelPrincipal getPanelPrincipal() {
        if(panelPrincipal == null) {
            panelPrincipal = new PanelPrincipal();
        }
        
        return panelPrincipal;
    }
    
    public void actualizarMenu() {
        getMenuPrincipal().actualizarMenu();
    }
    
    public void cargarOpcion(int opcion) {
        getPanelPrincipal().cargarOpcion(opcion);
    }
    
    public int getOpcionCargada() {
        return getPanelPrincipal().getOpcionActual();
    }
    
    /**
     * Controlador de eventos de ventana. 
     * @author jose.lara 27.07.2012
     */
    private static class AdaptadorVentana extends WindowAdapter {
        @Override
        public void windowClosing(WindowEvent e) {
            App.terminarEjecucion();
        }
    }
}
